Information handling systems include various devices and components that control data transfer applications. The data transfer applications frequently access and use information relating to the state of a physical device. Reliability and performance of the system depends on the accuracy of the state information. The physical devices may take numerous forms in various applications and system types. In a data storage system, physical devices typically include tape drives, disk drives, other types of storage drives, and combinational or hybrid-type devices.
In typical systems, the device state may frequently change. Because the state can generally be determined accurately by the relatively slow process of issuing a command sequence, many applications ascertain the state at one time and assume that any state changes are based on results of commands that are sent. The assumption is generally relatively safe in direct-connect models in which state changes are mostly based deterministically on the command stream and rarely changed by extraneous events.
Errors can occur, and the device state may change, due to events other than commands sent by an application. In one example, the device may fail. Although failure is a rare event, some advanced applications require operation to continue nonetheless. Accordingly, the assumptions of operation are not invariably correct and may lead to loss of reliability in the field.
Some systems support multiple hosts, servers, or other initiators so that device state may change because two initiators can simultaneously use or attempt to use the same device. In multiple-initiator configurations, more than one initiator can change state of a device, but each initiator assumes that the state changes based only on commands from that initiator. In many cases, the actual state of the device can be different from the assumptions of any initiator. In a storage area network (SAN) configuration, a device can commonly be shared by a dozen or more servers, increasing the possibility that state assumptions are inaccurate.
Some systems attempt to resolve device conflicts by polling the device at regular or irregular intervals. For example, using a Netbackup scan-host concept, a single server can issue a set of commands to determine a state of any device that is not in use. When another initiator or server running Netbackup seeks access to state information, the initiator or server contacts the scan-host database rather than issuing polling commands. The concept can only be successful when all possible contact to the device is through Netbackup with Netbackup properly configured, demands that result in poor scalability. Usage of Netbackup typically also requires an extra server or initiator to support scan-host functionality.
In accordance with some embodiments of the disclosed system, an apparatus capable of determining state of a device comprises a controller and a monitor executable on the controller. The monitor is capable of passively monitoring traffic between an initiator and the device, determining when the passively monitored traffic is insufficient for identifying state of the device, and actively issuing supplemental commands to the device to refresh device information when passively monitored traffic is insufficient. The monitor can also determine device state from the device information.
In accordance with other embodiments, a method of obtaining device state comprises passively monitoring traffic between an initiator and a physical device and determining when the passively monitored traffic is insufficient for identifying state of the physical device. The method further comprises actively issuing supplemental commands to the physical device to refresh physical device information when passively monitored traffic is insufficient and determining device state from the physical device information.